package utils

import (
	"context"
	"encoding/json"
	"fmt"
)

// Convert 使用示例：
// var sReq ServiceRegisterReq
// var rReq RegisterReq
// err := ConvertViaJSON(&sReq, &rReq)
func Convert(src, dst interface{}) error {
	data, err := json.Marshal(src)
	if err != nil {
		return err
	}
	return json.Unmarshal(data, dst)
}

func anyToInt(value any) (uint, error) {
	if val, ok := value.(uint); ok {
		return val, nil // 直接是 int 类型
	}
	return 0, fmt.Errorf("类型不匹配: 期望 int, 实际类型 %T", value)
}

func GetUserId(ctx context.Context) (uint, error) {
	uid := ctx.Value("user_id")
	return anyToInt(uid)
}
